import bwipjs from "bwip-js"; // 引入 bwip-js 库
// import { http } from "@/utils/http";
// 使用 Fetch API 加载字体文件
const loadFont = async (fontName, fontUrl) => {
  let url = fontUrl.substring(23);
  try {
    const response = await fetch(url);

    if (!response.ok) {
      throw new Error(`Failed to load font: ${url}`);
    }
    const fontBuffer = await response.arrayBuffer();
    console.log(fontBuffer);
    bwipjs.loadFont(fontName, 100, fontBuffer);
  } catch (error) {
    console.error(`Error loading font ${fontName}:`, error);
  }
};

// 生成条形码的方法
const generateBarcode = async (type, content, TextPosition, fontFamily) => {
  try {
    let isshowText = TextPosition === "none" ? false : true;
    const canvas = document.createElement("canvas");
    bwipjs.toCanvas(canvas, {
      bcid: type, // 条形码类型，例如 'code128'
      text: content, // 条形码内容
      scale: 10, // 缩放比例，增加清晰度
      width: 30, // 条形码宽度，单位是毫米
      height: 10, // 条形码高度，单位是毫米
      textsize: 8, //字体大小
      textfont: fontFamily, //字体
      includetext: isshowText, // 是否包含文本
      textxalign: "center", // 文本水平对齐方式 'left' | 'center' | 'right'
      textyalign: TextPosition // 文本垂直对齐方式 'above' | 'below'
    });

    // 将生成的 Canvas 转换为 Base64 编码
    return canvas.toDataURL("image/png");
  } catch (err) {
    console.error("Error generating barcode:", err);
    throw err;
  }
};

// 生成二维码的方法
const generateQRCode = async (type, content) => {
  try {
    const canvas = document.createElement("canvas");
    bwipjs.toCanvas(canvas, {
      bcid: type, // 二维码类型
      text: content, // 二维码内容
      width: 10, // 二维码宽度
      height: 10,
      scale: 10, // 缩放比例，增加清晰度
      includetext: false // 二维码不包含文本
    });

    // 将生成的 Canvas 转换为 Base64 编码
    return canvas.toDataURL("image/png");
  } catch (err) {
    console.error("Error generating QR code:", err);
    throw err;
  }
};

export { generateBarcode, generateQRCode, loadFont };
